home *** CD-ROM | disk | FTP | other *** search
Text File | 1980-01-06 | 33.4 KB | 1,555 lines |
- Track: EQU 0
- NoOfRings: EQU 40 ;40 A1200
- ;30 A500
- YSpace: EQU 32
- Raster: EQU 0
-
-
- MyDmacon=%01111100000
- ; abcdefghhhh
- ; a = Blitter nasty
- ; b = Enable DMA activity (always set this!)
- ; c = Bitplane enable
- ; d = Copper enable
- ; e = Blitter enable
- ; f = Sprite enable
- ; g = Disk enable
- ; h = Audio channels enable
-
- MyIntena=%100000000100000
- ; abcdeeeefghijkl
- ; a = Enable interrupts
- ; b = Lev. 6 External interrupt
- ; c = Lev. 5 Disk sync found
- ; d = Lev. 5 Serial port receive buffer full
- ; e = Lev. 4 Audio ch. 3-0 block finished
- ; f = Lev. 3 Blitter finished
- ; g = Lev. 3 Vertical blank
- ; h = Lev. 3 Copper
- ; i = Lev. 2 I/O Ports and timers
- ; j = Lev. 1 Software
- ; k = Lev. 1 Disk block finished
- ; l = Lev. 1 Serial port transmit buffer empty
-
- JumpPtr Begin
-
- *******************************************************************************
- **Macros
- *******************************************************************************
- WaitBlt: MACRO
- .vent\@: if Raster=1
- move.w #$fff,Color00+_Custom
- endif
- btst #14,Dmaconr+_Custom
- bne.b .vent\@
- if Raster=1
- move.w #0,Color00+_Custom
- endif
- ENDM
-
- SetInt: MACRO
- move.l (Lev\1Base).w,OldIrq\1
- move.l #Lev\1Irq,(Lev\1Base).w
- bra.b jumpo\@
- OldIrq\1: dc.l 0
- jumpo\@:
- ENDM
-
- ClrInt: MACRO
- move.l OldIrq\1(pc),(Lev\1Base).w
- ENDM
-
- Push.l: MACRO
- movem.l \1,-(sp)
- ENDM
-
- Push.w: MACRO
- movem.w \1,-(sp)
- ENDM
-
- Pull.l: MACRO
- movem.l (sp)+,\1
- ENDM
-
- Pull.w: MACRO
- movem.w (sp)+,\1
- ENDM
-
- StartPrg: MACRO
- move.w #$7fff,Intreq+_Custom
- move.w #MyDmacon+$8000,Dmacon+_Custom
- move.w #MyIntena+$8000,Intena+_Custom
- ENDM
-
- StopPrg: MACRO
- move.w #$7fff,Intena+_Custom
- move.w #$7fff,Dmacon+_Custom
- move.w #$7fff,Intreq+_Custom
- ENDM
-
- StopSystem: MACRO
- move.w Intenar+_Custom,OldIntena
- move.w Dmaconr+_Custom,OldDmacon
- StopPrg
- bra.b jumpo\@
- OldIntena: dc.w 0
- OldDmacon: dc.w 0
- jumpo\@:
- ENDM
-
- StartSystem: MACRO
- move.w OldDmacon(pc),d0
- or.w #$8000,d0
- move.w d0,Dmacon+_Custom
- move.w OldIntena(pc),d0
- or.w #$8000,d0
- move.w d0,Intena+_Custom
- ENDM
-
- ClearBss: MACRO
- lea _Bss1Start,a0
- move.l #(_Bss1End-_Bss1Start)/4,d0
- .clrloop\@ clr.l (a0)+
- subq.l #1,d0
- bne.b .clrloop\@
- ENDM
-
-
-
-
- *******************************************************************************
- **
- ** Initialisering
- **
- *******************************************************************************
- SECTION DenFedeKode,code
-
- Begin: IFEQ Track-0
- Push.l d0-a6
- StopSystem
- ELSE
- move.l #Lev3Irq,$64.w
- rts
- ENDC
-
- **Init starter -----------------------------------
- ClearBss 1
- ClearBss 2
-
- bsr ComputeColors
- bsr InitAGACopper
- lea ColorArray,a0
- lea AGA_Colors,a1
- moveq #0,d0
- moveq #7,d1
- bsr LoadAGACopper
- bsr Init_Rings
- bsr InitPerspTable
- bsr InitCodeBuffer
-
- IFEQ Track-0
- clr.l 0.w
- SetInt 3
- **Init slutter -----------------------------------
- WaitBlt
- StartPrg
-
-
-
- *******************************************************************************
- **
- ** Vent på exitsignal
- **
- *******************************************************************************
- WaitForExit: tst.b VBlank
- beq.b WaitForExit
-
- clr.b VBlank
- tst.b IWantOut
- bne.b ExitToDos
- bra.b WaitForExit
-
-
-
-
- *******************************************************************************
- **
- ** Exit to AmigaDOS
- **
- *******************************************************************************
- ExitToDos:
- StopPrg
-
- **Exit starter -----------------------------------
- move.w #0,Copcon+_Custom
- ClrInt 3
- **Exit slutter -----------------------------------
-
- StartSystem
-
- Pull.l d0-a6
- moveq #0,d0
- ENDC
- rts
-
-
-
- *******************************************************************************
- **
- ** Level 3 interrupt
- **
- *******************************************************************************
- Lev3Irq: st VBlank
- push.l d0-a6
- **Lev3irq starter --------------------------------
- move.l #Copper,Cop2lch+_Custom
- move.w #%10,Copcon+_Custom
- move.w d0,Copjmp2+_Custom
-
- lea Routines(pc),a0
- move.w Status(pc),d0
- add.w d0,d0
- add.w d0,d0
- move.l (a0,d0.w),a0
- jsr (a0)
-
- **Lev3irq slutter --------------------------------
- IF Raster=1
- move.w #$f00,Color00+_Custom
- ENDIF
- IF Raster=1
- move.w #$00f,Color00+_Custom
- ENDIF
- move.b $dff005,d0
- lsl.w #8,d0
- move.b $dff006,d0
- cmp.w MaxRast,d0
- blt.b .ud
- move.w d0,MaxRast
- .ud:
- pull.l d0-a6
- IFEQ Track-0
- move.w #$0020,Intreq+_Custom
- ELSE
- move.w #$0004,Intreq+_Custom
- ENDC
- rte
-
- Status: dc.w 0
- Routines: dc.l FadeUp,RingHandler,FadeDown
-
- RingHandler: bsr SwapScr
- bsr ClrScr
- bsr Storyboard
- bsr Draw_Rings
- bsr Move_Rings
- rts
-
-
- *******************************************************************************
- **
- ** Storyboard
- **
- *******************************************************************************
- Storyboard: move.w Story,d0
- beq.b Story_00
- subq.w #1,d0
- beq.b Story_01
- subq.w #1,d0
- beq.b Story_02
- rts
-
- Story_00: addq.w #2,Ring_Max
- cmp.w #256,Ring_Max
- bne.b .not
- addq.w #1,Story
- move.w #10*50,Story_Pause
- .not rts
-
- Story_01: subq.w #1,Story_Pause
- beq.b .next
- IFEQ Track-0
- btst #6,$bfe001
- beq.b .next
- ENDC
- rts
- .next addq.w #1,Story
- rts
-
- Story_02: addq.w #2,Ring_Min
- cmp.w #256,Ring_Min
- bne.b .out
- addq.w #1,Status
- .out rts
-
- FadeUp: move.l #FadeCopper,Cop2lch+_Custom
- move.w d0,Copjmp2+_Custom
-
- move.w mycol+2,d0
- move.w #$312,d1
- bsr fader
- move.w d0,mycol+2
- cmp.w #$312,d0
- bne.b .out
- addq.w #1,Status
- .out rts
-
- FadeDown: move.l #FadeCopper,Cop2lch+_Custom
- move.w d0,Copjmp2+_Custom
-
- move.w mycol+2,d0
- moveq #0,d1
- bsr fader
- move.w d0,mycol+2
- tst.w d0
- seq IWantOut
- rts
-
-
-
-
- **d0=fade from
- **d1=fade to
- **out: d0=newcol
- fader: move.w d0,d2
- move.w d1,d3
- lsr.w #8,d2
- lsr.w #8,d3
- cmp.w d2,d3
- beq.b .nored
- blt.b .redsub
- add.w #$100,d0
- bra.b .nored
- .redsub: sub.w #$100,d0
- .nored: move.w d0,d2
- move.w d1,d3
- lsr.w #4,d2
- lsr.w #4,d3
- and.w #$f,d2
- and.w #$f,d3
- cmp.w d2,d3
- beq.b .nogreen
- blt.b .greensub
- add.w #$10,d0
- bra.b .nogreen
- .greensub: sub.w #$10,d0
- .nogreen: move.w d0,d2
- move.w d1,d3
- and.w #$f,d2
- and.w #$f,d3
- cmp.w d2,d3
- beq.b .noblue
- blt.b .bluesub
- addq.w #$1,d0
- bra.b .noblue
- .bluesub: subq.w #$1,d0
- .noblue: rts
-
-
- *******************************************************************************
- **
- ** Initialiser PerspTable
- **
- *******************************************************************************
- InitPerspTable: lea PerspTable,a0
- move.w #256-1,d7
- .loop move.w d7,d0
- mulu #190,d0
- add.w #6000,d0
- move.l #6000*255,d1
- divu d0,d1
- move.w d1,(a0)+
- dbra d7,.loop
- rts
-
-
-
-
- *******************************************************************************
- **
- ** Draw all rings
- **
- *******************************************************************************
- Draw_Rings: clr.w Ring_Counter
- .next lea Ring_Array,a0
- move.w Ring_Counter,d0
- mulu #Ring_SIZEOF,d0
- add.w d0,a0
- moveq #0,d0
- moveq #0,d1
- moveq #0,d2
- move.w (a0)+,d1
- move.b (a0)+,d2
- move.b (a0)+,d0
- cmp.w Ring_Min,d0
- blt.b .dont
- cmp.w Ring_Max,d0
- bgt.b .dont
-
- ext.l d1
- move.w d0,d3
- not.b d3
- mulu #3,d3
- lsr.l #8,d3
- mulu #(288+113+YSpace)*80,d3
- add.l d3,d1
-
- ; lea PerspTable,a0
- ; add.w d0,d0
- ; move.w (a0,d0.w),d0
- bsr DrawCircle
- .dont addq.w #1,Ring_Counter
- cmp.w #NoOfRings,Ring_Counter
- bne.b .next
- rts
-
- Move_Rings: lea Ring_Array,a0
- moveq #0,d7
- .next addq.b #2,3(a0)
- bcs.b .ooops
- addq.w #4,a0
- .donext addq.w #1,d7
- cmp.w #NoOfRings,d7
- bne.b .next
- rts
- .ooops bsr Init_OneRing
- bra.b .donext
-
-
- Init_Rings: lea Ring_Array,a0
- moveq #NoOfRings-1,d0 ;ringnumber
- .next bsr Init_OneRing
- move.w #256,d1
- mulu d0,d1
- divu #NoOfRings,d1
- move.b d1,-1(a0)
- subq.w #1,d0
- bge.b .next
- rts
-
- Init_OneRing: lea Tunnel_YTab,a1
- add.w Tunnel_YTabPtr,a1
- move.w (a1),d2
- lea Tunnel_XTab,a1
- add.w Tunnel_XTabPtr,a1
- move.w (a1),d3
- addq.w #2,Tunnel_YTabPtr
- and.w #128-1,Tunnel_YTabPtr
- addq.w #2,Tunnel_XTabPtr
- and.w #128-1,Tunnel_XTabPtr
- move.w d3,d4
- asr.w #3,d4
- add.w d4,d2
- and.w #7,d3
- move.w d2,(a0)+
- move.b d3,(a0)+
- addq.w #1,a0
- rts
-
-
- **input:
- ** d0.w: size
- ** d1.l: byteoffset
- ** d2.w: bitoffset
- DrawCircle: lea CodeTable,a0
- add.w d0,d0
- add.w d0,d0
- move.l (a0,d0.w),JumpCode+2
- move.w #$4000,Intena+_Custom
- move.l a7,OldSP
- move.l Screen_Draw,a7
- add.l d1,a7
- add.w #144*80+22,a7
- add.w d2,d2
- add.w d2,d2
- move.l _BitJumps(PC,d2.w),a1
- jmp (a1)
-
- _BitJumps: dc.l _Bit0,_Bit1,_Bit2,_Bit3,_Bit4,_Bit5,_Bit6,_Bit7
-
- _Bit0: move.l a7,a0
- move.l a7,a1
- move.l a7,a2
- move.l a7,a3
- move.l a7,a4
- move.l a7,a5
- move.l a7,a6
- moveq #0,d0
- moveq #1,d1
- moveq #2,d2
- moveq #3,d3
- moveq #4,d4
- moveq #5,d5
- moveq #6,d6
- moveq #7,d7
- jmp JumpCode
- _Bit1: lea 1(a7),a0
- move.l a7,a1
- move.l a7,a2
- move.l a7,a3
- move.l a7,a4
- move.l a7,a5
- move.l a7,a6
- moveq #7,d0
- moveq #0,d1
- moveq #1,d2
- moveq #2,d3
- moveq #3,d4
- moveq #4,d5
- moveq #5,d6
- moveq #6,d7
- jmp JumpCode
- _Bit2: lea 1(a7),a0
- move.l a0,a1
- move.l a7,a2
- move.l a7,a3
- move.l a7,a4
- move.l a7,a5
- move.l a7,a6
- moveq #6,d0
- moveq #7,d1
- moveq #0,d2
- moveq #1,d3
- moveq #2,d4
- moveq #3,d5
- moveq #4,d6
- moveq #5,d7
- jmp JumpCode
- _Bit3: lea 1(a7),a0
- move.l a0,a1
- move.l a0,a2
- move.l a7,a3
- move.l a7,a4
- move.l a7,a5
- move.l a7,a6
- moveq #5,d0
- moveq #6,d1
- moveq #7,d2
- moveq #0,d3
- moveq #1,d4
- moveq #2,d5
- moveq #3,d6
- moveq #4,d7
- jmp JumpCode
- _Bit4: lea 1(a7),a0
- move.l a0,a1
- move.l a0,a2
- move.l a0,a3
- move.l a7,a4
- move.l a7,a5
- move.l a7,a6
- moveq #4,d0
- moveq #5,d1
- moveq #6,d2
- moveq #7,d3
- moveq #0,d4
- moveq #1,d5
- moveq #2,d6
- moveq #3,d7
- jmp JumpCode
- _Bit5: lea 1(a7),a0
- move.l a0,a1
- move.l a0,a2
- move.l a0,a3
- move.l a0,a4
- move.l a7,a5
- move.l a7,a6
- moveq #3,d0
- moveq #4,d1
- moveq #5,d2
- moveq #6,d3
- moveq #7,d4
- moveq #0,d5
- moveq #1,d6
- moveq #2,d7
- jmp JumpCode
- _Bit6: lea 1(a7),a0
- move.l a0,a1
- move.l a0,a2
- move.l a0,a3
- move.l a0,a4
- move.l a0,a5
- move.l a7,a6
- moveq #2,d0
- moveq #3,d1
- moveq #4,d2
- moveq #5,d3
- moveq #6,d4
- moveq #7,d5
- moveq #0,d6
- moveq #1,d7
- jmp JumpCode
- _Bit7: lea 1(a7),a0
- move.l a0,a1
- move.l a0,a2
- move.l a0,a3
- move.l a0,a4
- move.l a0,a5
- move.l a0,a6
- moveq #1,d0
- moveq #2,d1
- moveq #3,d2
- moveq #4,d3
- moveq #5,d4
- moveq #6,d5
- moveq #7,d6
- moveq #0,d7
- jmp JumpCode
-
- RestoreSP: move.l OldSP,a7
- move.w #$4000!$8000,Intena+_Custom
- rts
-
-
-
-
- *******************************************************************************
- **
- ** Compute some colors
- **
- *******************************************************************************
- ComputeColors: lea ColorArray,a0
- moveq #0,d0
- .exanext moveq #0,d1
- .testigen btst d1,d0
- bne.b .found
- addq.w #1,d1
- cmp.w #3,d1
- bne.b .testigen
- move.l #$331122,d2
- bra.b .gotcolor
- .found add.w d1,d1
- add.w d1,d1
- move.l .colors(PC,d1.w),d2
- .gotcolor move.l d2,(a0)+
- addq.w #1,d0
- cmp.w #8,d0
- bne.b .exanext
- rts
- .colors dc.l $ffbbff,$bb77aa,$774466
-
-
-
-
- *******************************************************************************
- **
- ** Fade 24bit colors
- **
- ** input:
- ** d0.l=source color
- ** d1.l=dest color
- ** d6.w=step
- ** d7.w=last step
- **
- ** output:
- ** d2.l=new color
- **
- ** trashed regs:
- ** d0-d6
- **
- *******************************************************************************
- FadeAGA: move.l d0,d2
- move.l d1,d3
- swap d2
- swap d3
- sub.w d2,d3
- muls d6,d3
- divs d7,d3
- add.w d2,d3
- swap d3
- clr.w d3 ;R
- move.l d0,d2
- move.l d1,d4
- and.w #$ff00,d2
- and.w #$ff00,d4
- sub.w d2,d4
- lsr.w #8,d4
- muls d6,d4
- divs d7,d4
- lsl.w #8,d4
- add.w d2,d4
- and.l #$00ff00,d4 ;G
- move.w d0,d5
- move.w d1,d2
- and.w #$00ff,d5
- and.w #$00ff,d2
- sub.w d5,d2
- muls d6,d2
- divs d7,d2
- add.w d5,d2
- and.l #$0000ff,d2 ;B
- or.l d3,d2
- or.l d4,d2 ;color
- rts
-
-
-
-
-
- *******************************************************************************
- **
- ** Load AGA copper with colors
- **
- ** input:
- ** a0.l=24bit color array (00000000RRRRRRRRGGGGGGGGBBBBBBBB per color)
- ** a1.l=initialized aga copper array
- ** d0.w=start color
- ** d1.w=end color
- **
- *******************************************************************************
- LoadAGACopper: moveq #0,d2 ;color index to current bank
- sub.w d0,d1 ;number of colors to load
- move.w d1,d7 ;color countdown
- move.w d0,d6
- beq.b .noskip
- add.w d0,d0
- add.w d0,d0
- add.w d0,a0 ;skip first colors
- move.w d6,d0
- lsr.w #5,d0
- mulu #33*2*4,d0
- add.w d0,a1 ;skip first banks
- and.w #$1f,d6
- .noskip addq.w #4,a1
- clr.w -(sp)
- lea (8+1)*4(a1),a2 ;lower nibbles
- .next move.l (a0)+,d0
- move.l d0,d3
- move.w d0,d1
- move.l d0,d2
- and.w #$000f,d0
- and.w #$0f00,d1
- lsr.w #4,d1
- swap d2
- and.w #$f,d2
- lsl.w #8,d2
- or.w d2,d1
- or.w d1,d0
- move.w d0,2(a2)
- move.l d3,d0
- move.w d0,d1
- move.l d0,d2
- and.w #$f0,d0
- lsr.w #4,d0
- move.w d1,(sp)
- move.b (sp),d1
- and.w #$00f0,d1
- swap d2
- and.w #$00f0,d2
- lsl.w #4,d2
- or.w d2,d1
- or.w d1,d0
- move.w d0,2(a1)
- addq.w #4,a1
- addq.w #4,a2
- subq.w #1,d7
- blt.b .out
- addq.w #1,d6
- cmp.w #$20,d6
- bne.b .next
- lea 34*4(a1),a1
- lea 34*4(a2),a2
- moveq #0,d6
- bra.b .next
- .out clr.w (sp)+
- rts
-
- *******************************************************************************
- **
- ** Init AGA copper-array
- **
- *******************************************************************************
- InitAGACopper: lea AGA_Colors,a0
- move.l #Bplcon3<<16!$0c40,d0
- move.l #Bplcon3<<16!$0e40,d1
- moveq #1-1,d7
- .loop move.l d0,(a0)+
- bsr .fillit
- move.l d1,(a0)+
- bsr .fillit
- add.w #$2000,d0
- add.w #$2000,d1
- dbra d7,.loop
- rts
- .fillit move.w #Color00,d2
- moveq #8-1,d6
- .fillloop move.w d2,(a0)+
- clr.w (a0)+
- addq.w #2,d2
- dbra d6,.fillloop
- rts
-
-
-
-
- *******************************************************************************
- **
- ** Initialiser CodeBuffer
- **
- *******************************************************************************
- InitCodeBuffer: lea CodeBuffer,a0
- lea SinTable,a1
- lea CosTable,a2
- lea CodeTable,a3
- lea PerspTable,a4
- moveq #0,d0 ;ringsize
- moveq #0,d1 ;angle
-
- .next move.l a0,(a3)+
- moveq #64-1,d7
- .loop moveq #0,d2
- moveq #0,d3
- move.w (a1,d1.w),d2
- move.w (a2,d1.w),d3
- move.w d0,d4
- add.w d4,d4
- move.w (a4,d4.w),d4
- muls d4,d2
- muls d4,d3
- swap d2
- swap d3
- rol.l #2,d2
- rol.l #2,d3
- muls #80,d3
- move.w d2,d4
- asr.w #3,d4
- add.w d4,d3 ;byteoffset
- bsr _GetOpcode
- move.w d4,(a0)+
- move.w d3,(a0)+
- add.w #2048/64,d1
- and.w #2048-1,d1
- dbra d7,.loop
- move.w #$4EF9,(a0)+
- move.l #RestoreSP,(a0)+
- add.w #2,d1
- and.w #2048-1,d1
- addq.w #1,d0
- cmp.w #64,d0
- bne.b .next
-
- .next2 move.l a0,(a3)+
- moveq #64-1,d7
- .loop2 moveq #0,d2
- moveq #0,d3
- move.w (a1,d1.w),d2
- move.w (a2,d1.w),d3
- move.w d0,d4
- add.w d4,d4
- move.w (a4,d4.w),d4
- muls d4,d2
- muls d4,d3
- swap d2
- swap d3
- rol.l #2,d2
- rol.l #2,d3
- muls #80,d3
- move.w d2,d4
- asr.w #3,d4
- add.w d4,d3 ;byteoffset
- bsr _GetOpcode
- move.w d4,(a0)+
- move.w d3,(a0)+
- move.w d4,(a0)+
- add.w #80,d3
- move.w d3,(a0)+
- add.w #2048/64,d1
- and.w #2048-1,d1
- dbra d7,.loop2
- move.w #$4EF9,(a0)+
- move.l #RestoreSP,(a0)+
- add.w #2,d1
- and.w #2048-1,d1
- addq.w #1,d0
- cmp.w #64*2,d0
- bne.b .next2
-
- .next3 move.l a0,(a3)+
- moveq #64-1,d7
- .loop3 moveq #0,d2
- moveq #0,d3
- move.w (a1,d1.w),d2
- move.w (a2,d1.w),d3
- move.w d0,d4
- add.w d4,d4
- move.w (a4,d4.w),d4
- muls d4,d2
- muls d4,d3
- swap d2
- swap d3
- rol.l #2,d2
- rol.l #2,d3
- push.w d2/d3
- muls #80,d3
- move.w d2,d4
- asr.w #3,d4
- add.w d4,d3 ;byteoffset
- bsr _GetOpcode
- move.w d4,(a0)+
- move.w d3,(a0)+
- move.w d4,(a0)+
- add.w #80,d3
- move.w d3,(a0)+
- pull.w d2/d3
- addq.w #1,d2
- muls #80,d3
- move.w d2,d4
- asr.w #3,d4
- add.w d4,d3 ;byteoffset
- bsr _GetOpcode
- move.w d4,(a0)+
- move.w d3,(a0)+
- add.w #2048/64,d1
- and.w #2048-1,d1
- dbra d7,.loop3
- move.w #$4EF9,(a0)+
- move.l #RestoreSP,(a0)+
- add.w #2,d1
- and.w #2048-1,d1
- addq.w #1,d0
- cmp.w #64*3,d0
- bne.b .next3
-
- .next4 move.l a0,(a3)+
- moveq #64-1,d7
- .loop4 moveq #0,d2
- moveq #0,d3
- move.w (a1,d1.w),d2
- move.w (a2,d1.w),d3
- move.w d0,d4
- add.w d4,d4
- move.w (a4,d4.w),d4
- muls d4,d2
- muls d4,d3
- swap d2
- swap d3
- rol.l #2,d2
- rol.l #2,d3
- push.w d2/d3
- muls #80,d3
- move.w d2,d4
- asr.w #3,d4
- add.w d4,d3 ;byteoffset
- bsr _GetOpcode
- move.w d4,(a0)+
- move.w d3,(a0)+
- move.w d4,(a0)+
- add.w #80,d3
- move.w d3,(a0)+
- pull.w d2/d3
- addq.w #1,d2
- muls #80,d3
- move.w d2,d4
- asr.w #3,d4
- add.w d4,d3 ;byteoffset
- bsr _GetOpcode
- move.w d4,(a0)+
- move.w d3,(a0)+
- move.w d4,(a0)+
- add.w #80,d3
- move.w d3,(a0)+
- add.w #2048/64,d1
- and.w #2048-1,d1
- dbra d7,.loop4
- move.w #$4EF9,(a0)+
- move.l #RestoreSP,(a0)+
- add.w #2,d1
- and.w #2048-1,d1
- addq.w #1,d0
- cmp.w #256,d0
- bne.w .next4
-
- rts
-
- **input:
- ** d2.w: bitnummer
- **output:
- ** d4.w: opcode
- _GetOpcode: and.w #7,d2
- add.w d2,d2
- add.w d2,d2
- move.w _DotCode(PC,d2.w),d4
- rts
-
- _DotCode: bset d7,0(a7)
- bset d6,0(a6)
- bset d5,0(a5)
- bset d4,0(a4)
- bset d3,0(a3)
- bset d2,0(a2)
- bset d1,0(a1)
- bset d0,0(a0)
-
-
-
-
- *******************************************************************************
- **
- ** Clear screen using blitter
- **
- *******************************************************************************
- ClrScr: move.l Screen_Clear,d0
- lea CopBlit1+2,a0
- bsr.b .insert
- lea CopBlit2+2,a0
- bsr.b .insert
- lea CopBlit3+2,a0
- .insert move.w d0,4(a0)
- swap d0
- move.w d0,(a0)
- swap d0
- add.l #(288+113+YSpace)*80,d0
- rts
-
-
-
- *******************************************************************************
- **
- ** Swap screen for doublebuffering!
- **
- *******************************************************************************
- SwapScr: lea Screen_Clear+3*4,a0
- lea -4(a0),a1
- move.l (a1),d7
- moveq #3-2,d6
- .cloop move.l -(a1),-(a0)
- dbra d6,.cloop
- move.l d7,(a1)
-
- lea Copper_PlanePtr+2,a3
- move.l Screen_Show,d0
- moveq #3-1,d7
- .loop move.w d0,4(a3)
- swap d0
- move.w d0,(a3)
- swap d0
- add.l #(288+113+YSpace)*80,d0
- addq.w #8,a3
- dbra d7,.loop
- rts
-
-
-
-
- *******************************************************************************
- **
- ** Variable
- **
- *******************************************************************************
- SECTION VariableTing,bss
-
- CNOP 0,4
- _Bss2Start:
- OldSP: ds.l 1
- MaxRast: ds.w 1
- VBlank: ds.b 1
- IFEQ Track-0
- IWantOut: ds.b 1
- ELSE
- IWantOut: EQU $80
- ds.b 1
- ENDC
- ColorArray: ds.l 8
- CodeBuffer: ds.b 64*(4*64*1+6)
- ds.b 64*(4*64*2+6)
- ds.b 64*(4*64*3+6)
- ds.b 64*(4*64*4+6)
- _CodeBufferEnd:
- CodeTable: ds.l 256
-
- RSRESET
- Ring_BytePos: rs.w 1
- Ring_BitPos: rs.b 1
- Ring_Size: rs.b 1
- Ring_SIZEOF: rs.b 0
-
- Ring_Array: ds.b NoOfRings*Ring_SIZEOF
- Ring_Counter: ds.w 1
- Tunnel_YTabPtr: ds.w 1
- Tunnel_XTabPtr: ds.w 1
- PerspTable: ds.w 256
- Story: ds.w 1
- Ring_Min: ds.w 1
- Ring_Max: ds.w 1
- Story_Pause: ds.w 1
- CNOP 0,4
- _Bss2End:
-
-
- SECTION SjovData,data
-
- Screen_Clear: dc.l Screen1
- Screen_Draw: dc.l Screen2
- Screen_Show: dc.l Screen3
-
- ;Option nº = 1
- ;Min. y-val = -1.63840E+04
- ;Max. y-val = 1.63840E+04
- ;Startvalue = min
- ;Length = 1024
- SinTable: dc.w 0,101,201,302,402,503,603,704,804,904,1005,1105,1205,1306,1406,1506
- dc.w 1606,1706,1806,1906,2006,2105,2205,2305,2404,2503,2603,2702,2801,2900,2999,3098
- dc.w 3196,3295,3393,3492,3590,3688,3786,3883,3981,4078,4176,4273,4370,4467,4563,4660
- dc.w 4756,4852,4948,5044,5139,5235,5330,5425,5520,5614,5708,5803,5897,5990,6084,6177
- dc.w 6270,6363,6455,6547,6639,6731,6823,6914,7005,7096,7186,7276,7366,7456,7545,7635
- dc.w 7723,7812,7900,7988,8076,8163,8250,8337,8423,8509,8595,8680,8765,8850,8935,9019
- dc.w 9102,9186,9269,9352,9434,9516,9598,9679,9760,9841,9921,10001,10080,10159,10238,10316
- dc.w 10394,10471,10549,10625,10702,10778,10853,10928,11003,11077,11151,11224,11297,11370,11442,11514
- dc.w 11585,11656,11727,11797,11866,11935,12004,12072,12140,12207,12274,12340,12406,12472,12537,12601
- dc.w 12665,12729,12792,12854,12916,12978,13039,13100,13160,13219,13279,13337,13395,13453,13510,13567
- dc.w 13623,13678,13733,13788,13842,13896,13949,14001,14053,14104,14155,14206,14256,14305,14354,14402
- dc.w 14449,14497,14543,14589,14635,14680,14724,14768,14811,14854,14896,14937,14978,15019,15059,15098
- dc.w 15137,15175,15213,15250,15286,15322,15357,15392,15426,15460,15493,15525,15557,15588,15619,15649
- dc.w 15679,15707,15736,15763,15791,15817,15843,15868,15893,15917,15941,15964,15986,16008,16029,16049
- dc.w 16069,16088,16107,16125,16143,16160,16176,16192,16207,16221,16235,16248,16261,16273,16284,16295
- dc.w 16305,16315,16324,16332,16340,16347,16353,16359,16364,16369,16373,16376,16379,16381,16383,16384
- CosTable: dc.w 16384,16384,16383,16381,16379,16376,16373,16369,16364,16359,16353,16347,16340,16332,16324,16315
- dc.w 16305,16295,16284,16273,16261,16248,16235,16221,16207,16192,16176,16160,16143,16125,16107,16088
- dc.w 16069,16049,16029,16008,15986,15964,15941,15917,15893,15868,15843,15817,15791,15763,15736,15707
- dc.w 15679,15649,15619,15588,15557,15525,15493,15460,15426,15392,15357,15322,15286,15250,15213,15175
- dc.w 15137,15098,15059,15019,14978,14937,14896,14854,14811,14768,14724,14680,14635,14589,14543,14497
- dc.w 14449,14402,14354,14305,14256,14206,14155,14104,14053,14001,13949,13896,13842,13788,13733,13678
- dc.w 13623,13567,13510,13453,13395,13337,13279,13219,13160,13100,13039,12978,12916,12854,12792,12729
- dc.w 12665,12601,12537,12472,12406,12340,12274,12207,12140,12072,12004,11935,11866,11797,11727,11656
- dc.w 11585,11514,11442,11370,11297,11224,11151,11077,11003,10928,10853,10778,10702,10625,10549,10471
- dc.w 10394,10316,10238,10159,10080,10001,9921,9841,9760,9679,9598,9516,9434,9352,9269,9186
- dc.w 9102,9019,8935,8850,8765,8680,8595,8509,8423,8337,8250,8163,8076,7988,7900,7812
- dc.w 7723,7635,7545,7456,7366,7276,7186,7096,7005,6914,6823,6731,6639,6547,6455,6363
- dc.w 6270,6177,6084,5990,5897,5803,5708,5614,5520,5425,5330,5235,5139,5044,4948,4852
- dc.w 4756,4660,4563,4467,4370,4273,4176,4078,3981,3883,3786,3688,3590,3492,3393,3295
- dc.w 3196,3098,2999,2900,2801,2702,2603,2503,2404,2305,2205,2105,2006,1906,1806,1706
- dc.w 1606,1506,1406,1306,1205,1105,1005,904,804,704,603,503,402,302,201,101
- dc.w 0,-101,-201,-302,-402,-503,-603,-703,-804,-904,-1005,-1105,-1205,-1306,-1406,-1506
- dc.w -1606,-1706,-1806,-1906,-2006,-2105,-2205,-2305,-2404,-2503,-2603,-2702,-2801,-2900,-2999,-3098
- dc.w -3196,-3295,-3393,-3492,-3590,-3688,-3786,-3883,-3981,-4078,-4176,-4273,-4370,-4467,-4563,-4660
- dc.w -4756,-4852,-4948,-5044,-5139,-5235,-5330,-5425,-5520,-5614,-5708,-5803,-5897,-5990,-6084,-6177
- dc.w -6270,-6363,-6455,-6547,-6639,-6731,-6823,-6914,-7005,-7096,-7186,-7276,-7366,-7456,-7545,-7635
- dc.w -7723,-7812,-7900,-7988,-8076,-8163,-8250,-8337,-8423,-8509,-8595,-8680,-8765,-8850,-8935,-9019
- dc.w -9102,-9186,-9269,-9352,-9434,-9516,-9598,-9679,-9760,-9840,-9921,-10001,-10080,-10159,-10238,-10316
- dc.w -10394,-10471,-10549,-10625,-10702,-10778,-10853,-10928,-11003,-11077,-11151,-11224,-11297,-11370,-11442,-11514
- dc.w -11585,-11656,-11727,-11797,-11866,-11935,-12004,-12072,-12140,-12207,-12274,-12340,-12406,-12472,-12537,-12601
- dc.w -12665,-12729,-12792,-12854,-12916,-12978,-13039,-13100,-13160,-13219,-13279,-13337,-13395,-13453,-13510,-13567
- dc.w -13623,-13678,-13733,-13788,-13842,-13896,-13949,-14001,-14053,-14104,-14155,-14206,-14256,-14305,-14354,-14402
- dc.w -14449,-14497,-14543,-14589,-14635,-14680,-14724,-14768,-14811,-14854,-14896,-14937,-14978,-15019,-15059,-15098
- dc.w -15137,-15175,-15213,-15250,-15286,-15322,-15357,-15392,-15426,-15460,-15493,-15525,-15557,-15588,-15619,-15649
- dc.w -15679,-15707,-15736,-15763,-15791,-15817,-15843,-15868,-15893,-15917,-15941,-15964,-15986,-16008,-16029,-16049
- dc.w -16069,-16088,-16107,-16125,-16143,-16160,-16176,-16192,-16207,-16221,-16235,-16248,-16261,-16273,-16284,-16295
- dc.w -16305,-16315,-16324,-16332,-16340,-16347,-16353,-16359,-16364,-16369,-16373,-16376,-16379,-16381,-16383,-16384
- dc.w -16384,-16384,-16383,-16381,-16379,-16376,-16373,-16369,-16364,-16359,-16353,-16347,-16340,-16332,-16324,-16315
- dc.w -16305,-16295,-16284,-16273,-16261,-16248,-16235,-16221,-16207,-16192,-16176,-16160,-16143,-16125,-16107,-16088
- dc.w -16069,-16049,-16029,-16008,-15986,-15964,-15941,-15917,-15893,-15868,-15843,-15817,-15791,-15763,-15736,-15707
- dc.w -15679,-15649,-15619,-15588,-15557,-15525,-15493,-15460,-15426,-15392,-15357,-15322,-15286,-15250,-15213,-15175
- dc.w -15137,-15098,-15059,-15019,-14978,-14937,-14896,-14854,-14811,-14768,-14724,-14680,-14635,-14589,-14543,-14497
- dc.w -14449,-14402,-14354,-14305,-14256,-14206,-14155,-14104,-14053,-14001,-13949,-13896,-13842,-13788,-13733,-13678
- dc.w -13623,-13567,-13510,-13453,-13395,-13337,-13279,-13219,-13160,-13100,-13039,-12978,-12916,-12854,-12792,-12729
- dc.w -12665,-12601,-12537,-12472,-12406,-12340,-12274,-12207,-12140,-12072,-12004,-11935,-11866,-11797,-11727,-11656
- dc.w -11585,-11514,-11442,-11370,-11297,-11224,-11151,-11077,-11003,-10928,-10853,-10778,-10702,-10625,-10549,-10471
- dc.w -10394,-10316,-10238,-10159,-10080,-10001,-9921,-9841,-9760,-9679,-9598,-9516,-9434,-9352,-9269,-9186
- dc.w -9102,-9019,-8935,-8850,-8765,-8680,-8595,-8509,-8423,-8337,-8250,-8163,-8076,-7988,-7900,-7812
- dc.w -7723,-7635,-7545,-7456,-7366,-7277,-7186,-7096,-7005,-6914,-6823,-6731,-6639,-6547,-6455,-6363
- dc.w -6270,-6177,-6084,-5990,-5897,-5803,-5708,-5614,-5520,-5425,-5330,-5235,-5139,-5044,-4948,-4852
- dc.w -4756,-4660,-4563,-4467,-4370,-4273,-4176,-4078,-3981,-3883,-3786,-3688,-3590,-3492,-3393,-3295
- dc.w -3196,-3098,-2999,-2900,-2801,-2702,-2603,-2503,-2404,-2305,-2205,-2105,-2006,-1906,-1806,-1706
- dc.w -1606,-1506,-1406,-1306,-1205,-1105,-1005,-904,-804,-704,-603,-503,-402,-302,-201,-101
- dc.w 0,101,201,302,402,503,603,704,804,904,1005,1105,1205,1306,1406,1506
- dc.w 1606,1706,1806,1906,2006,2105,2205,2305,2404,2503,2603,2702,2801,2900,2999,3098
- dc.w 3196,3295,3393,3492,3590,3688,3786,3883,3981,4078,4176,4273,4370,4467,4563,4660
- dc.w 4756,4852,4948,5044,5139,5235,5330,5425,5520,5614,5708,5803,5897,5990,6084,6177
- dc.w 6270,6363,6455,6547,6639,6731,6823,6914,7005,7096,7186,7276,7366,7456,7545,7635
- dc.w 7723,7812,7900,7988,8076,8163,8250,8337,8423,8509,8595,8680,8765,8850,8935,9019
- dc.w 9102,9186,9269,9352,9434,9516,9598,9679,9760,9841,9921,10001,10080,10159,10238,10316
- dc.w 10394,10471,10549,10625,10702,10778,10853,10928,11003,11077,11151,11224,11297,11370,11442,11514
- dc.w 11585,11656,11727,11797,11866,11935,12004,12072,12140,12207,12274,12340,12406,12472,12537,12601
- dc.w 12665,12729,12792,12854,12916,12978,13039,13100,13160,13219,13279,13337,13395,13453,13510,13567
- dc.w 13623,13678,13733,13788,13842,13896,13949,14001,14053,14104,14155,14206,14256,14305,14354,14402
- dc.w 14449,14497,14543,14589,14635,14680,14724,14768,14811,14854,14896,14937,14978,15019,15059,15098
- dc.w 15137,15175,15213,15250,15286,15322,15357,15392,15426,15460,15493,15525,15557,15588,15619,15649
- dc.w 15679,15707,15736,15763,15791,15817,15843,15868,15893,15917,15941,15964,15986,16008,16029,16049
- dc.w 16069,16088,16107,16125,16143,16160,16176,16192,16207,16221,16235,16248,16261,16273,16284,16295
- dc.w 16305,16315,16324,16332,16340,16347,16353,16359,16364,16369,16373,16376,16379,16381,16383,16384
-
- Tunnel_YTab: ;0,360,64,32,0,w,80,y,n
- DC.W $0050,$0140,$0230,$0320,$0410,$0500,$05F0,$0690,$0730,$07D0
- DC.W $0870,$08C0,$0960,$09B0,$09B0,$09B0,$09B0,$09B0,$09B0,$0960
- DC.W $08C0,$0870,$07D0,$0730,$0690,$05F0,$0500,$0410,$0320,$0230
- DC.W $0140,$0050,$FFB0,$FEC0,$FDD0,$FCE0,$FBF0,$FB00,$FA10,$F970
- DC.W $F8D0,$F830,$F790,$F740,$F6A0,$F650,$F650,$F650,$F650,$F650
- DC.W $F650,$F6A0,$F740,$F790,$F830,$F8D0,$F970,$FA10,$FB00,$FBF0
- DC.W $FCE0,$FDD0,$FEC0,$FFB0
-
-
- Tunnel_XTab: ;90,450,64,80,0,w,1,y,n
- DC.W $004F,$004F,$004D,$004B,$0048,$0044,$0040,$003B,$0035,$002F
- DC.W $0029,$0022,$001A,$0013,$000B,$0003,$FFFD,$FFF5,$FFED,$FFE6
- DC.W $FFDE,$FFD7,$FFD1,$FFCB,$FFC5,$FFC0,$FFBC,$FFB8,$FFB5,$FFB3
- DC.W $FFB1,$FFB1,$FFB1,$FFB1,$FFB3,$FFB5,$FFB8,$FFBC,$FFC0,$FFC5
- DC.W $FFCB,$FFD1,$FFD7,$FFDE,$FFE6,$FFED,$FFF5,$FFFD,$0003,$000B
- DC.W $0013,$001A,$0022,$0029,$002F,$0035,$003B,$0040,$0044,$0048
- DC.W $004B,$004D,$004F,$004F
-
-
-
-
- JumpCode: jmp 0
-
-
-
-
- *******************************************************************************
- **
- ** Og den vildeste copperliste...
- **
- *******************************************************************************
- SECTION MyCopper,data_c
-
- FadeCopper: dc.w Bplcon0,$0201
- dc.w $1001,$fffe
- .col
- mycol: dc.w Color00,0
- dc.l -2
-
- Copper: dc.w Bplcon0,$0201
- dc.w Bplcon1,$0000
- dc.w Bplcon2,$0024
- dc.w Bplcon3,$0c40
- ; dc.w $01fc,$0000
- ; dc.w $01e4,$0000
-
- dc.w Spr0pth,0,Spr0ptl,0
- dc.w Spr1pth,0,Spr1ptl,0
- dc.w Spr2pth,0,Spr2ptl,0
- dc.w Spr3pth,0,Spr3ptl,0
- dc.w Spr4pth,0,Spr4ptl,0
- dc.w Spr5pth,0,Spr5ptl,0
- dc.w Spr6pth,0,Spr6ptl,0
- dc.w Spr7pth,0,Spr7ptl,0
-
- AGA_Colors: blk.l (8+1)*2,0
-
- dc.w $1001,$fffe
- Copper_PlanePtr: dc.w Bpl1pth,0,Bpl1ptl,0
- dc.w Bpl2pth,0,Bpl2ptl,0
- dc.w Bpl3pth,0,Bpl3ptl,0
-
- ; dc.w $010c,$0011
- dc.w Diwstrt,$2071
- dc.w Bplcon0,$3200
- dc.w Bplcon2,$0024
- dc.w Bplcon3,$0c40
- dc.w Diwstop,$40d1
- dc.w Ddfstrt,$0030
- dc.w Ddfstop,$00d8
- dc.w Bplcon1,$0000
- dc.w Bpl1mod,80-44
- dc.w Bpl2mod,80-44
-
- ; dc.w $01dc,$0020
- ; dc.w $01e4,$2100
- ; dc.w $01fc,$0003
-
- dc.w $0001,$7ffe ;WaitBlt
- CopBlit1: dc.w Bltdpth,0,Bltdptl,0
- dc.w Bltcon0,$0100,Bltcon1,$0000
- dc.w Bltdmod,80-44
- dc.w Bltsize,288<<6!22
-
- dc.w $0001,$7ffe ;WaitBlt
- CopBlit2: dc.w Bltdpth,0,Bltdptl,0
- ; dc.w Bltcon0,$0100,Bltcon1,$0000
- ; dc.w Bltdmod,80-44
- dc.w Bltsize,288<<6!22
-
- dc.w $0001,$7ffe ;WaitBlt
- CopBlit3: dc.w Bltdpth,0,Bltdptl,0
- ; dc.w Bltcon0,$0100,Bltcon1,$0000
- ; dc.w Bltdmod,80-44
- dc.w Bltsize,288<<6!22
-
-
- dc.l -2
- dc.l -2
-
-
-
-
- *******************************************************************************
- **
- ** Screens+Gfx
- **
- *******************************************************************************
- SECTION Screens,bss_c
-
- CNOP 0,4
- _Bss1Start:
- ds.b (113+YSpace)*80
- Screen1: ds.b 288*80
- ds.b (113+YSpace)*80
- ds.b 288*80
- ds.b (113+YSpace)*80
- ds.b 288*80
- ds.b (113+YSpace)*80
- Screen2: ds.b 288*80
- ds.b (113+YSpace)*80
- ds.b 288*80
- ds.b (113+YSpace)*80
- ds.b 288*80
- ds.b (113+YSpace)*80
- Screen3: ds.b 288*80
- ds.b (113+YSpace)*80
- ds.b 288*80
- ds.b (113+YSpace)*80
- ds.b 288*80
- ds.b (113+YSpace)*80
- CNOP 0,4
- _Bss1End:
-
-
-
-
- *******************************************************************************
- **
- ** Print info on program
- **
- *******************************************************************************
-
- PRINTT ' '
- PRINTT 'Code buffer size:'
- PRINTV _CodeBufferEnd-CodeBuffer
- PRINTT
- PRINTT 'Bitmap size:'
- PRINTV _Bss1End-_Bss1Start
- PRINTT
- PRINTT 'Dots ialt:'
-
-
- *******************************************************************************
- **
- ** Hardware registers
- **
- *******************************************************************************
- Bltddat: EQU $000
- Dmaconr: EQU $002
- Vposr: EQU $004
- Vhposr: EQU $006
- Dskdatr: EQU $008
- Joy0dat: EQU $00a
- Joy1dat: EQU $00c
- Clxdat: EQU $00e
- Adkconr: EQU $010
- Pot0dat: EQU $012
- Pot1dat: EQU $014
- Potgor: EQU $016
- Serdatr: EQU $018
- Dskbytr: EQU $01a
- Intenar: EQU $01c
- Intreqr: EQU $01e
- Dskpth: EQU $020
- Dskptl: EQU $022
- Dsklen: EQU $024
- Dskdat: EQU $026
- Refptr: EQU $028
- Vposw: EQU $02a
- Vhposw: EQU $02c
- Copcon: EQU $02e
- Serdat: EQU $030
- Serper: EQU $032
- Potgo: EQU $034
- Joytest: EQU $036
- Strequ: EQU $038
- Strvbl: EQU $03a
- Strhor: EQU $03c
- Strlong: EQU $03e
- Bltcon0: EQU $040
- Bltcon1: EQU $042
- Bltafwm: EQU $044
- Bltalwm: EQU $046
- Bltcpth: EQU $048
- Bltcptl: EQU $04a
- Bltbpth: EQU $04c
- Bltbptl: EQU $04e
- Bltapth: EQU $050
- Bltaptl: EQU $052
- Bltdpth: EQU $054
- Bltdptl: EQU $056
- Bltsize: EQU $058
- Bltcmod: EQU $060
- Bltbmod: EQU $062
- Bltamod: EQU $064
- Bltdmod: EQU $066
- Bltcdat: EQU $070
- Bltbdat: EQU $072
- Bltadat: EQU $074
- Dsksync: EQU $07e
- Cop1lch: EQU $080
- Cop1lcl: EQU $082
- Cop2lch: EQU $084
- Cop2lcl: EQU $086
- Copjmp1: EQU $088
- Copjmp2: EQU $08a
- Copins: EQU $08c
- Diwstrt: EQU $08e
- Diwstop: EQU $090
- Ddfstrt: EQU $092
- Ddfstop: EQU $094
- Dmacon: EQU $096
- Clxcon: EQU $98
- Intena: EQU $09a
- Intreq: EQU $09c
- Adkcon: EQU $09e
- Aud0dat: EQU $0aa
- Aud1dat: EQU $0ba
- Aud2dat: EQU $0ca
- Aud3dat: EQU $0da
- Aud0lch: EQU $0a0
- Aud1lch: EQU $0b0
- Aud2lch: EQU $0c0
- Aud3lch: EQU $0d0
- Aud0len: EQU $0a4
- Aud1len: EQU $0b4
- Aud2len: EQU $0c4
- Aud3len: EQU $0d4
- Aud0per: EQU $0a6
- Aud1per: EQU $0b6
- Aud2per: EQU $0c6
- Aud3per: EQU $0d6
- Aud0vol: EQU $0a8
- Aud1vol: EQU $0b8
- Aud2vol: EQU $0c8
- Aud3vol: EQU $0d8
- Aud0lcl: EQU $0a2
- Aud1lcl: EQU $0b2
- Aud2lcl: EQU $0c2
- Aud3lcl: EQU $0d2
- Bpl1pth: EQU $0e0
- Bpl1ptl: EQU $0e2
- Bpl2pth: EQU $0e4
- Bpl2ptl: EQU $0e6
- Bpl3pth: EQU $0e8
- Bpl3ptl: EQU $0ea
- Bpl4pth: EQU $0ec
- Bpl4ptl: EQU $0ee
- Bpl5pth: EQU $0f0
- Bpl5ptl: EQU $0f2
- Bpl6pth: EQU $0f4
- Bpl6ptl: EQU $0f6
- Bpl7pth: EQU $0f8
- Bpl7ptl: EQU $0fa
- Bpl8pth: EQU $0fc
- Bpl8ptl: EQU $0fe
- Bplcon0: EQU $100
- Bplcon1: EQU $102
- Bplcon2: EQU $104
- Bplcon3: EQU $106
- Bpl1mod: EQU $108
- Bpl2mod: EQU $10a
- Bpl1dat: EQU $110
- Bpl2dat: EQU $112
- Bpl3dat: EQU $114
- Bpl4dat: EQU $116
- Bpl5dat: EQU $118
- Bpl6dat: EQU $11a
- Spr0pth: EQU $120
- Spr0ptl: EQU $122
- Spr1pth: EQU $124
- Spr1ptl: EQU $126
- Spr2pth: EQU $128
- Spr2ptl: EQU $12a
- Spr3pth: EQU $12c
- Spr3ptl: EQU $12e
- Spr4pth: EQU $130
- Spr4ptl: EQU $132
- Spr5pth: EQU $134
- Spr5ptl: EQU $136
- Spr6pth: EQU $138
- Spr6ptl: EQU $13a
- Spr7pth: EQU $13c
- Spr7ptl: EQU $13e
- Spr0pos: EQU $140
- Spr0ctl: EQU $142
- Spr0data: EQU $144
- Spr0datb: EQU $146
- Spr1pos: EQU $148
- Spr1ctl: EQU $14a
- Spr1data: EQU $14c
- Spr1datb: EQU $14e
- Spr2pos: EQU $150
- Spr2ctl: EQU $152
- Spr2data: EQU $154
- Spr2datb: EQU $156
- Spr3pos: EQU $158
- Spr3ctl: EQU $15a
- Spr3data: EQU $15c
- Spr3datb: EQU $15e
- Spr4pos: EQU $160
- Spr4ctl: EQU $162
- Spr4data: EQU $164
- Spr4datb: EQU $166
- Spr5pos: EQU $168
- Spr5ctl: EQU $16a
- Spr5data: EQU $16c
- Spr5datb: EQU $16e
- Spr6pos: EQU $170
- Spr6ctl: EQU $172
- Spr6data: EQU $174
- Spr6datb: EQU $176
- Spr7pos: EQU $178
- Spr7ctl: EQU $17a
- Spr7data: EQU $17c
- Spr7datb: EQU $17e
- Color00: EQU $180
- Color01: EQU $182
- Color02: EQU $184
- Color03: EQU $186
- Color04: EQU $188
- Color05: EQU $18a
- Color06: EQU $18c
- Color07: EQU $18e
- Color08: EQU $190
- Color09: EQU $192
- Color10: EQU $194
- Color11: EQU $196
- Color12: EQU $198
- Color13: EQU $19a
- Color14: EQU $19c
- Color15: EQU $19e
- Color16: EQU $1a0
- Color17: EQU $1a2
- Color18: EQU $1a4
- Color19: EQU $1a6
- Color20: EQU $1a8
- Color21: EQU $1aa
- Color22: EQU $1ac
- Color23: EQU $1ae
- Color24: EQU $1b0
- Color25: EQU $1b2
- Color26: EQU $1b4
- Color27: EQU $1b6
- Color28: EQU $1b8
- Color29: EQU $1ba
- Color30: EQU $1bc
- Color31: EQU $1be
- _Custom: EQU $dff000
-
-
-
-
- *******************************************************************************
- **
- ** Interrupt addresses
- **
- *******************************************************************************
- Lev1Base: EQU $64
- Lev2Base: EQU $68
- Lev3Base: EQU $6c
- Lev4Base: EQU $70
- Lev5Base: EQU $74
- Lev6Base: EQU $78
- Lev7Base: EQU $7c
- Trap0: EQU $80
-
-
-
-
-
-
-